三维医学图像resize到固定尺寸

您所在的位置:网站首页 opencv resize失真 三维医学图像resize到固定尺寸

三维医学图像resize到固定尺寸

2024-07-16 12:09| 来源: 网络整理| 查看: 265

Resize是图像处理中经常使用的一个操作,就是将图像缩放到一个固定尺寸,比如分类神经网络的输入大小必须保持一致,就要用到resize;比如有的网络训练学习需要整个图像,但计算机显卡资源不足,不能将整幅图像输入网络,这时也可用到resize,废话不多说,直接看代码,用就是了:

import numpy as np import SimpleITK as sitk from glob import glob def resize_image_itk(itkimage, newSize, resamplemethod=sitk.sitkNearestNeighbor): resampler = sitk.ResampleImageFilter() originSize = itkimage.GetSize() # 原来的体素块尺寸 originSpacing = itkimage.GetSpacing() newSize = np.array(newSize,float) factor = originSize / newSize newSpacing = originSpacing * factor newSize = newSize.astype(np.int) #spacing肯定不能是整数 resampler.SetReferenceImage(itkimage) # 需要重新采样的目标图像 resampler.SetSize(newSize.tolist()) resampler.SetOutputSpacing(newSpacing.tolist()) resampler.SetTransform(sitk.Transform(3, sitk.sitkIdentity)) resampler.SetInterpolator(resamplemethod) itkimgResampled = resampler.Execute(itkimage) # 得到重新采样后的图像 return itkimgResampled image_path = 'F:\lung_lobe\data\data\mask/' image_file = glob(image_path + '*.nrrd') for i in range(len(image_file)): itkimage = sitk.ReadImage(image_file[i]) itkimgResampled = resize_image_itk(itkimage, (128,128,64),resamplemethod= sitk.sitkNearestNeighbor) #这里要注意:mask用最近邻插值,CT图像用线性插值 sitk.WriteImage(itkimgResampled,'F:\lung_lobe\data\data\mask_resize/' + image_file[i][len(image_path):])

这里有两个点需要注意:

(1)图像的Spacing不要设置成整数;

(2)插值过程中,mask图像用最近邻插值,CT图像用线性插值

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3